# -*- coding: latin-1 -*-
import sys,  time
from PyQt4.QtCore import SIGNAL, QVariant,  Qt,  QObject
from PyQt4.QtGui import QTableView, QDialog,  QMessageBox
from PyQt4.QtSql import QSqlQuery

sys.path.append("../")

from vista.historiaClinica_vista import Ui_FormHistoriaClinica
from sinopsis_controlador import sinopsis_controlador
from conexion import conexion
from modelo.mascota_modelo import mascota_modelo
from modelo.hclinica_modelo import hclinica_modelo
from modelo.duenio_modelo import duenio_modelo

DEBUG = False

class historiaClinica_controlador(Ui_FormHistoriaClinica):

    def __init__(self, mascota, seleccionado, labelSaldo):
        self.widget = QDialog()
        self.setupUi(self.widget)
        # Connections
        self.widget.connect(self.pushButtonBorrar, SIGNAL("clicked()"),
                            self.bajaRegistro)
        self.widget.connect(self.pushButtonAgregar, SIGNAL("clicked()"),
                            self.altaRegistro)
        self.widget.connect(self.tableViewHistoriaClinica, SIGNAL("doubleClicked(QModelIndex)"), self.iraSinopsis)
        self.widget.connect(self.tableViewHistoriaClinica, SIGNAL("clicked(QModelIndex)"), self.activarModificaciones)
        self.widget.connect(self.pushButtonCambios, SIGNAL("clicked()"),
                            self.guardarCambios)
        self.widget.connect(self.textEdit, SIGNAL("textChanged()"), self.activarCambios)
        self.hclinica=hclinica_modelo()
        self.record=mascota.model.record(seleccionado.row())
        self.idAnimal = self.record.value("id_animal").toInt()[0]
        del(self.record)
        self.tableViewHistoriaClinica.setModel(self.hclinica.model)
        self.tableViewHistoriaClinica.setColumnHidden(self.hclinica.ID, True)
        self.hclinica.listarHistoriaClinica(self.idAnimal)
        self.tableViewHistoriaClinica.setColumnHidden(self.hclinica.ID, True)
        self.tableViewHistoriaClinica.setColumnHidden(self.hclinica.IdAnimal, True)
        self.ajustarDatosTabla()
        self.desactivarModificaciones()
        self.labelSaldo = labelSaldo
        
    def ajustarDatosTabla(self):
        self.tableViewHistoriaClinica.resizeColumnsToContents()
        self.tableViewHistoriaClinica.setHorizontalHeader(self.tableViewHistoriaClinica.horizontalHeader().setStretchLastSection(True))

    def guardarCambios(self):
        seleccionado=self.tableViewHistoriaClinica.selectedIndexes()[0]  
        record=self.hclinica.model.record(seleccionado.row())
        idHclinica =record.value("id_hclinica").toInt()[0]
        if DEBUG: print "Hclinica", idHclinica
        descripcion=self.textEdit.toPlainText()
        query = QSqlQuery()
        query.prepare("UPDATE historiaclinica SET descripcion = :descripcion where id_animal = :id_animal and id_hclinica = :id_hclinica" )
        query.bindValue(":descripcion", QVariant(descripcion)) 
        query.bindValue(":id_animal", QVariant(self.idAnimal)) 
        query.bindValue(":id_hclinica", QVariant(idHclinica))
        query.exec_()
        self.hclinica.model.select()
        self.ajustarDatosTabla()
        self.desactivarModificaciones()
    
    def altaRegistro(self):
        if DEBUG: print "apreto el boton altaRegistro"
        descripcion=self.textEditDescripcion.toPlainText()
        fecha=self.calendarWidget.selectedDate()
        query = QSqlQuery()
        query.prepare("INSERT INTO historiaclinica (fecha,descripcion,id_animal)  VALUES  \
                    (:fecha, :descripcion, :id_animal)")
        query.bindValue(":fecha", QVariant(fecha)) 
        query.bindValue(":descripcion", QVariant(descripcion)) 
        query.bindValue(":id_animal", QVariant(self.idAnimal)) 
        query.exec_()
        self.hclinica.model.select()
        self.tableViewHistoriaClinica.resizeColumnsToContents()
        self.ajustarDatosTabla()
        self.desactivarModificaciones()
        self.textEditDescripcion.setText("")
        self.pushButtonCerrar.setFocus()
        
    def iraSinopsis(self):
        seleccionado=self.tableViewHistoriaClinica.selectedIndexes()[0]
        record=self.hclinica.model.record(seleccionado.row())
        idHclinica = record.value("id_hclinica").toInt()[0]
        self.ui = sinopsis_controlador(self.idAnimal, idHclinica, self.labelSaldo)
        self.ui.widget.setAttribute(Qt.WA_DeleteOnClose)
        self.ui.widget.showMaximized() 
        QObject.connect(self.ui.widget,  SIGNAL("destroyed()"), self.ajustarDatosTabla)  
    
    def activarModificaciones(self):
        self.groupBox.setEnabled(True) 
        seleccionado=self.tableViewHistoriaClinica.selectedIndexes()[0]  
        record=self.hclinica.model.record(seleccionado.row())
        self.textEdit.setText(record.value("descripcion").toString())
        self.pushButtonBorrar.setEnabled(True)
    
    def desactivarModificaciones(self):
        self.groupBox.setEnabled(False) 
        self.textEdit.setText("")
        self.pushButtonBorrar.setEnabled(False)    
        
    def activarCambios(self): 
        self.pushButtonCambios.setEnabled(True)   
        
    def bajaRegistro(self):
        seleccionado=self.tableViewHistoriaClinica.selectedIndexes()[0]
        record = self.hclinica.model.record(seleccionado.row())
        respuesta = QMessageBox.question(None, "Message", 
        "Esta seguro que desea borrar este registro de la historia clinica?","No","Si","" ,  False,  True)
        if respuesta: 
            idHclinica = record.value("id_hclinica").toInt() [0]
            self.hclinica.eliminarRegistro(idHclinica)
            self.textEdit.setText("")
            self.groupBox.setEnabled(False)
        if DEBUG: print "apreto el boton bajaRegistro"
        self.ajustarDatosTabla()
        self.desactivarModificaciones()
